#pragma once

#include "ZNetworkCommon.h"

namespace	Z	{

//------------------------------------------------------------------------------------------------------------------------
struct	MessageReceiver;
class	Stream;


//------------------------------------------------------------------------------------------------------------------------
class	NetworkController
{
public:
	NetworkController()	:	mMessageReceiver(nullptr)	{}
	virtual	~NetworkController()	= 0	{}
	virtual	bool	start(MessageReceiver* pMessageReceiver)	{
		mMessageReceiver	= pMessageReceiver;
		return true;
	}
	virtual	void	cleanup()	= 0;
	virtual	void	send(Stream* pStream, NetworkId kNetworkId)	= 0;
	virtual	void	shutdown(NetworkId kNetworkId)	{}

protected:
	MessageReceiver*	mMessageReceiver;
};

}